1. Field of the Invention
The present invention relates to a method and apparatus for improving a reordering functionality in a wireless communications system, and more particularly, to a method and apparatus for improving a reordering functionality of a high-speed downlink reception operation in a CELL_FACH state of a wireless communications system.
2. Description of the Prior Art
The third generation (3G) mobile telecommunications system has adopted a Wideband Code Division Multiple Access (WCDMA) wireless air interface access method for a cellular network. WCDMA provides high frequency spectrum utilization, universal coverage, and high quality, high-speed multimedia data transmission. The WCDMA method also meets all kinds of QoS requirements simultaneously, providing diverse, flexible, two-way transmission services and better communication quality to reduce transmission interruption rates.
In the prior art, lengths of all Protocol Data Units (PDUs) outputted from a Radio Link Control (RLC) layer are the same. However, such doings decreases bandwidth utility rate and data processing efficiency, especially for high data rate applications, such as High Speed Downlink Package Access (HSDPA) and High Speed Uplink Package Access (HSUPA) in the 3G mobile telecommunications system. Thus, targeting at high data rate applications, the 3rd Generation Partnership Project (3GPP) makes some modifications for RLC and Media Access Control (MAC) layers, which primarily includes adopting variable RLC PDU sizes and providing PDU segmentation in the MAC layer, to enhance bandwidth utility rate and data processing efficiency, thereby making high data rate induced by physical layer technologies such as Multi-input Multi-output (MIMO) and high order modulations become possible.
In such a situation, the 3GPP newly introduces a MAC-ehs protocol entity in the MAC layer to support segmentation, reordering and reassembly of RLC PDUs with variable lengths. In addition, the MAC-ehs protocol entity can further multiplex data of various priority queues to a MAC-ehs PDU in a Transmission Time Interval (TTI) for enhancing the flexibility of data scheduling. Detailed operations of the MAC-ehs entity can be found in the MAC protocol specification made by the 3GPP, and are not narrated herein.
Besides, on the basis of HSDPA, the 3GPP further introduces HS-DSCH reception in a CELL_FACH state allowing a user equipment (UE) in the CELL_FACH state to monitor a High Speed Downlink Shared Channel (HS-DSCH) accompanied with a Shared Control Channel for HS-DSCH (HS-SCCH) for downlink data reception, so as to improve a peak data rate, a signaling delay, a state transition delay, download times and flexible cell capacity.
According to the MAC protocol specification made by the 3GPP, when the UE initiates the HS-DSCH reception in the CELL_FACH state, the network cannot positively acknowledge whether packets it has transmitted are successfully received. To increase a probability that the UE successfully receives packets, the network can utilize a periodic retransmission mechanism of a scheduling algorithm to periodically retransmit packets that it has already transmitted. In this case, the UE needs to handle and reorder these packets for being delivered to an upper protocol layer in order.
Thus, in order to make the UE correctly process the service content, a reordering functionality of the above MAC-ehs entity needs to execute PDU discarding, reordering and delivering operations according to Sequence Numbers (SNs) of the received PDUs, so that the PDUs that may be transmitted from different sources (cells) and/or retransmitted from a same source can be combined to form a PDU sequence with a correct order and delivered to the upper layer efficiently, which further avoids data delay and errors. As for the detailed operations of the reordering functionality, please refer to the following descriptions.
First, state variables, timers and protocol parameters below are defined by the specification of the communications protocol described above:
1. Variable next_expected_TSN:
represents an SN of a next PDU that is expected to be received by the reordering functionality, of which the initial value is 0.
2. Variable RcvWindow_UpperEdge:
represents an SN corresponding to a upper edge of a receiver window in the reordering functionality, of which the value equals to a highest SN of all received PDUs and the initial value is set to 63.
3. Timer T1:
represents a time to deliver PDUs that are not received in order by the receiver window for avoiding delivery stall of the received PDU.
4. Variable T1_TSN:
represents an SN of a PDU that is not received in order by the receiver window to trigger the timer T1.
5. Parameter Receiver_Window_Size:
represents a size of the receiver window in the reordering functionality, of which the value is configured by upper layers.
Thus, when the receiver window is not advanced, a receivable range of the receiver window is from (RcvWindow_UpperEdge−Receiver_Window_Size+1) to RcvWindow_UpperEdge. After the UE initiates the HS-DSCH reception in the CELL_FACH state, if an SN of a received PDU conforms to the variable next_expected_TSN, the PDU shall be delivered to a upper layer reassembly entity, and the value of the variable next_expected_TSN is added by 1. If an SN of a received PDU lies in the receiver window and smaller than the variable next_expected_TSN, the PDU shall be discarded. Conversely, if an SN of a received PDU lies in the receiver window but greater than the variable next_expected_TSN, the PDU shall be stored in a buffer by the reordering functionality. On the other hand, if an SN of a received PDU lies outside the receiver window, the variable RcvWindow_UpperEdge is set to be the SN of the received PDU so as to advance the receiver window, and the variable next_expected_TSN is set to be (RcvWindow_UpperEdge−Receiver_Window_Size+1) if smaller than (RcvWindow_UpperEdge−Receiver_Window_Size+1).
The operations of the timer T1 are illustrated in the following. If a PDU with an SN greater than the variable next_expected_TSN is received and the timer T1 is not activated yet, the timer T1 shall be started and the variable T1_TSN is set to be the SN of the received PDU. Before expiry of the timer T1, if a received PDU with an SN equal to the variable T1_TSN can be delivered, such as the variable next_expected_TSN is advanced to the SN equal to the variable T1_TSN, the timer T1 shall be stopped. On the other hand, when the timer T1 expires and the variable next_expected_TSN is not yet advanced to the SN equal to the variable T1_TSN, all received PDUs with SNs smaller than the variable T1_TSN and all received PDUs with consecutive SNs smaller than that of a next not received PDU shall be delivered to a upper layer reassembly entity for being reassembled, and the variable next_expected_TSN shall be set to the SN of the next not received PDU. When the timer T1 is stopped or expires, if there still exist received PDUs that cannot be delivered to the reassembly entity in the receiver window, the variable T1_TSN is set to be a highest SN among those of the received PDUs that cannot be delivered, and the timer T1 is restarted.
In other words, after starting the timer T1, if the received PDU with the SN equal to the variable T1_TSN cannot be delivered until the expiry of the timer T1, PDUs with SNs smaller than the variable T1_TSN that have not been successfully received are then considered to be lost, and the received PDUs with the SNs smaller than that of the next not received PDU are all delivered to the upper layer for being reassembled, so as to prevent data delay of the UE. In this situation, the SN of the next PDU that is expected to be received by the reordering functionality (i.e. the variable next_expected_TSN) is then turned to be a smallest SN among those of PDUs that are not successively received or delivered. If there still exist received PDUs that cannot be delivered to the reassembly entity in the receiver window, the operations shall be repeated until the PDU with the SN equal to the variable RcvWindow_UpperEdge is delivered and the variable next_expected_TSN is then advanced to a next SN of the variable RcvWindow_UpperEdge.
As mentioned above, in normally situations such as the reordering functionality is initiated, the PDUs can be received in order or the PDUs are delivered out of order due to expiry of the timer T1, the variable next_expected_TSN is greater than the variable RcvWindow_UpperEdge by 1 (with modulus operations). In this case, if no PDU is received for a period of time (e.g. longer than expiry time of the timer T1), such as the UE temporarily moves out coverage of all serving cells, when the UE moves back in the coverage of the serving cells and receives PDUs with SNs lying in the receiver window, the received PDUs will be discarded unnecessarily according to the above specification, so that data error of the UE may occur.
For example, please refer to FIG. 1. FIG. 1 is a diagram representing variables and SNs of received PDUs in a reordering functionality. Supposing that the parameter Receiver_Window_Size is set to be 6, the range between (*) represents a receiver window, R represents the variable next_expected_TSN, x represents a PDU that is not received or is already delivered in the receiver window, H represents the variable RcvWindow_UpperEdge, and T represents the variable T1_TSN. Firstly, a PDU with SN=6 is received at a timing point TP1, and thus the variable RcvWindow_UpperEdge is set to be 6 for advancing the receiver window and the variable next_expected_TSN is set to a smallest SN of the receiver window. Since no timer T1 is activated and the SN of the received PDU is greater than the variable next_expected_TSN, the timer T1 shall be started and the variable T1_TSN is set to be 6. Next, a PDU with SN=4 is received at a timing point TP2, and since the SN of the received PDU lies in the receiver window and is greater than the variable next_expected_TSN, the received PDU is stored in a buffer by the reordering functionality. When PDUs with SNs=5, 6 and 7 are received simultaneously at a timing point TP3, since the PDU with SN=7 lies outside the receiver window, the reordering functionality not only stores the PDUs with SNs=5,6 but also sets the variable RcvWindow_UpperEdge and the variable next_expected_TSN to be 7 and 2, respectively, so as to advance the receiver window. After that, a PDU with SN=2 is received at a timing point TP4, and since the SN conforms to the variable next_expected_TSN, the received PDU is delivered to the reassembly entity and the variable next_expected_TSN is advanced forward to a next SN.
Supposing that the timer T1 expires at a timing point TP5, since the variable T1_TSN is still greater than the variable next_expected_TSN, all received PDUs with SNs smaller than the variable T1_TSN and that of the next not received PDU (i.e. SN=8) are delivered, and the variable next_expected_TSN is set to the SN of the next not received PDU. In this situation, if subsequent PDUs can be received in order, the reordering functionality also advances the receiver window and delivers the received PDUs in order. For example, when a PDU with SN=8 is received at a timing point TP6, the timer T1 is started and the variable T1_TSN is set to be 8. However, since the variable next_expected_TSN is also equal to 8, the PDU with SN=8 is then delivered to the upper layer and the timer T1 is stopped immediately.
Please further refer to FIG. 1. Supposing that no PDU is received for a period of time after the timing point TP6 (e.g. longer than expiry time of the timer T1), if a PDU with an SN lying inside the receiver window is then received at a timing point TP7, such as the PDU with SN=5, the received PDU shall be discarded according to the above specification, no matter whether the received PDUs are lately transmitted from the network, which may cause data error of the UE. Timing points TP8 and TP9 also exist the same problems.
Therefore, in order to solve the said problem, the 3GPP newly introduces a reset timer Treset in the reordering functionality, which is used for resetting the receiver window when the timer T1 expires, so as to avoid a situation that received PDUs are discarded incorrectly. According to the newly formulated MAC protocol, when the UE initiates the HS-DSCH reception in the CELL_FACH state, if a PDU is correctly received and no reset timer Treset is activated, the reset timer Treset shall be started. Conversely, if a PDU is correctly received and the reset timer Treset is already activated, the reset timer Treset shall be restarted. On the other hand, when the reset timer Treset expires, the variable next_expected_TSN and the variable RcvWindow_UpperEdge shall be reset to their initial values.
That means, when no PDU is received for a period of time, causing expiry of the reset timer Treset, the receiver window of the reordering functionality shall be reset to prevent received PDUs from being discarded incorrectly. However, in the prior art, stored PDU segments in the upper layer reassembly entity are not discarded when the reset of the receiver window is performed. In this situation, subsequently received PDUs may be wrongly concatenated with the stored PDU segments, resulting in data error of the UE. On the other hand, the increase of the new reset timer Treset may add system complexity of the UE, which further consumes limited operating resources of the UE.
Besides, when the receiver window of the reordering functionality is reset or initiated, such as when the reset timer Treset expires or required by upper layers, the variable next_expected_TSN and the variable RcvWindow_UpperEdge are set to be 0 and 63, respectively. In this situation, if PDUs with SNs lying in the receiver window is received (e.g. a PDU with SN=62) after the receiver window of the reordering functionality is reset or initiated, the received PDUs would be discarded incorrectly, which may also cause data error of the UE.